//
//  LZTStatusModel.swift
//  LZTWeibo
//
//  Created by Yin jianxun on 16/8/13.
//  Copyright © 2016年 YinJianxun. All rights reserved.
//

import UIKit

class LZTStatusModel: NSObject {
    
    //获取数据的属性
    // MARK: - 模型属性
    /// 创建时间
    var created_at: String?
    /// 微博ID
    var id: Int64 = 0
    /// 微博信息内容
    var text: String?
    /// 微博来源
    var source: String?
    // 用户模型
    var user: LZTUserModel?
    // 转发微博
    var retweeted_status: LZTStatusModel?
    //配图 数组
    var pic_urls: [LZTPictureInfo]?
    //int	转发数
    var reposts_count: Int = 0
    //int	评论数
    var comments_count: Int = 0
    //int	表态数
    var attitudes_count: Int = 0
    
    //KVC
    init(dict: [String: AnyObject]) {
        super.init()
        
        setValuesForKeysWithDictionary(dict) //此时的kvc不能给 用户模型-user赋值
    }
    
    //重写setValueforKey
    override func setValue(value: AnyObject?, forKey key: String) {
        
        //用户模型 手动转模型赋值
        
        if key == "user" {
            
            //判断value是否为nil 或者 能否转成字典
            guard let v = value as? [String: AnyObject] else {
                return
            }
            
            //直接手动 赋值
            user = LZTUserModel(dict: v)
        } else if key == "retweeted_status" {
            
            //判断value是否为nil 或者 能否转成字典
            guard let v = value as? [String: AnyObject] else {
                return
            }
            
            //转发微博的赋值
            retweeted_status = LZTStatusModel(dict: v)
            
        } else if key == "pic_urls" {
            
            //判断 接受的配图数组是否是nil 并且是否可以转成 数组
            guard let v = value as? [[String: AnyObject]] else {
                return
            }
            
            //创建可变数组
            var tempArray:[LZTPictureInfo] = [LZTPictureInfo]()
            
            for dic in v {
                
                //创建模型
                let pic = LZTPictureInfo(dict: dic)
                tempArray.append(pic)
            }
            pic_urls = tempArray
            
        } else {
            //出去key-user以外的部分 通过父类进行赋值
            super.setValue(value, forKey: key)
        }
        
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    
}
